import http from './http.js'
/**
 * 用户实体类
 * 对应后端的User模型
 */
class User {
  constructor(data = {}) {
    this.id = data.id || 0
    this.user_id = data.user_id || ''
    this.name = data.name || ''
    this.gender = data.gender || ''
    this.phone = data.phone || ''
    this.birthday = data.birthday || ''
    this.remarks = data.remarks || ''
    this.password_hash = data.password_hash || ''
    this.roles = data.roles || ''
    this.store_id = data.store_id || ''
  }
}

/**
 * 用户相关接口封装
 * 对应后端的user_controller.py接口
 */
export default {

  /**
   * 创建新用户
   * @param {Object} userData - 用户数据
   * @param {string} userData.name - 姓名
   * @param {string} userData.phone - 手机号
   * @param {string} userData.password - 密码
   * @param {string} userData.roles - 角色(admin,customer)
   * @returns {Promise} 创建结果Promise
   */
  async createUser(userData) {
    return http.post('/users', userData)
  },

   /**
   * 注册新用户
   * @param {Object} userData - 用户数据
   * @param {string} userData.name - 姓名
   * @param {string} userData.phone - 手机号
   * @param {string} userData.password - 密码
   * @param {string} userData.roles - 角色(admin,customer)
   * @returns {Promise} 创建结果Promise
   */
   async registerUser(userData) {
    return http.post('/users/register', userData)
  },

  /**
   * 更新用户信息
   * @param {string} userId - 用户ID
   * @param {Object} updateData - 更新数据
   * @returns {Promise} 更新结果Promise
   */
  async updateUser(userId, updateData) {
    return http.put(`/users/${userId}`, updateData)
  },

  /**
   * 获取用户列表
   * @param {Object} [query] - 查询参数
   * @param {number} [query.page=1] - 页码
   * @param {number} [query.limit=20] - 每页数量
   * @returns {Promise} 用户列表Promise
   */
  async getUsers(query = {}) {
    return http.get('/users', { params: query })
  },
  /**
   * 获取用户信息
   * @param {string} storeId - 店铺ID
   * @param {string} userId - 用户ID
   * @returns {Promise} 用户信息Promise
   */
  async getUserById(storeId,userId) {
    return http.get(`/users/${storeId}/${userId}`)
  },
   /**
   * 绑定卡包到用户
   * @param {string} userId - 用户ID
   * @param {string} storeId - 店铺ID
   * @param {string} packageId - 卡包ID
   * @returns {Promise} 绑定结果Promise
   */
   async bindCardPackage(staffId,userId, storeId, packageId) {
    return http.post(`/users/${userId}/bind_card_package/${storeId}/${packageId}`,{staff_id:staffId})
  },
    /**
   * 获取卡包列表
   * @param {Object} params 查询参数
   * @returns {Promise<{data: CardPackage[]}>}
   */
    async getCardPackageList(userId,storeId,searchName) {
      try {
        const response = await http.get(`/users/card_package_list/${userId}`,{ store_id:storeId,name:searchName });
        return  response.data;
      } catch (error) {
        console.error('获取卡包列表失败:', error);
        throw error;
      }
    }
}